#ifndef KCFTRACKER_H
#define KCFTRACKER_H

#include <unsupported/Eigen/FFT>
#include <Eigen/Dense>
#include "UDPimg.h"

class KCFTracker {
public:
    KCFTracker();
    void init(const Eigen::Vector4f& roi, Image* image);
    Eigen::Vector4f update(Image* image);

private:
    Eigen::MatrixXf gaussianCorrelation(const Eigen::MatrixXf& x1, const Eigen::MatrixXf& x2);
    Eigen::MatrixXf createGaussianPeak(int sizey, int sizex);
    Eigen::MatrixXf getFeatures(Image* image, bool inithann);

    Eigen::MatrixXf _alphaf;
    Eigen::MatrixXf _prob;
    Eigen::MatrixXf _tmpl;
    Eigen::MatrixXf _hann;
    Eigen::Vector2i _tmpl_sz;
    float _scale;

    int _cell_size;
    float _padding;
    float _lambda;
    float _output_sigma_factor;
};

#endif
